@import "@fontsource-variable/inter";
@import "@fontsource-variable/roboto-mono";

@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  :root {
    --background: 0 0% 100%;
    --foreground: 240 10% 3.9%;
    --card: 0 0% 100%;
    --card-foreground: 240 10% 3.9%;
    --popover: 0 0% 100%;
    --popover-foreground: 240 10% 3.9%;
    --primary: 240 5.9% 10%;
    --primary-foreground: 0 0% 98%;
    --secondary: 240 4.8% 95.9%;
    --secondary-foreground: 240 5.9% 10%;
    --muted: 240 4.8% 95.9%;
    --muted-foreground: 240 3.8% 46.1%;
    --accent: 240 4.8% 95.9%;
    --accent-foreground: 240 5.9% 10%;
    --destructive: 0 84.2% 60.2%;
    --destructive-foreground: 0 0% 98%;
    --border: 240 5.9% 90%;
    --input: 240 5.9% 90%;
    --ring: 240 5.9% 10%;
    --radius: 0.5rem;
    --chart-1: 12 76% 61%;
    --chart-2: 173 58% 39%;
    --chart-3: 197 37% 24%;
    --chart-4: 43 74% 66%;
    --chart-5: 27 87% 67%;

    --font-sans: "Inter Variable", sans-serif;
    --font-mono: "Roboto Mono Variable", monospace;
  }

  .dark,
  [data-kb-theme="dark"] {
    --background: 240 10% 3.9%;
    --foreground: 0 0% 98%;
    --card: 240 10% 3.9%;
    --card-foreground: 0 0% 98%;
    --popover: 240 10% 3.9%;
    --popover-foreground: 0 0% 98%;
    --primary: 0 0% 98%;
    --primary-foreground: 240 5.9% 10%;
    --secondary: 240 3.7% 15.9%;
    --secondary-foreground: 0 0% 98%;
    --muted: 240 3.7% 15.9%;
    --muted-foreground: 240 5% 64.9%;
    --accent: 240 3.7% 15.9%;
    --accent-foreground: 0 0% 98%;
    --destructive: 0 62.8% 30.6%;
    --destructive-foreground: 0 0% 98%;
    --border: 240 3.7% 15.9%;
    --input: 240 3.7% 15.9%;
    --ring: 240 4.9% 83.9%;
    --chart-1: 220 70% 50%;
    --chart-2: 160 60% 45%;
    --chart-3: 30 80% 55%;
    --chart-4: 280 65% 60%;
    --chart-5: 340 75% 55%;
  }
}

@layer base {
  * {
    @apply border-border;
  }
  body {
    @apply bg-background text-foreground;
  }
}

html,
body {
  height: 100%;
  width: 100%;
  @apply flex flex-col;
}

body {
  @apply overflow-y-auto;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-attachment: fixed;
  min-height: calc(
    100vh - constant(safe-area-inset-bottom)
  );
  min-height: calc(100vh - env(safe-area-inset-bottom));
}

.bg-image {
  position: relative;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-image: var(--background-image);

  &::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: hsl(
      var(--background) / var(--background-image-opacity)
    );
  }
}

#root {
  @apply flex-1;
}

/* Typography */
@layer components {
  .h1 {
    @apply scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl;
  }

  .h2 {
    @apply scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0;
  }

  .h3 {
    @apply scroll-m-20 text-2xl font-semibold tracking-tight;
  }

  .h4 {
    @apply scroll-m-20 text-xl font-semibold tracking-tight;
  }

  .p {
    @apply leading-7 [&:not(:first-child)]:mt-6;
  }

  .blockquote {
    @apply mt-6 border-l-2 pl-6 italic;
  }

  .code {
    @apply relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold;
  }

  .table {
    @apply w-full;
    & tr {
      @apply m-0 border-t p-0 even:bg-muted;
      & th {
        @apply border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right;
      }
      & td {
        @apply border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right;
      }
    }
  }

  .list {
    @apply my-6 ml-6 list-disc [&>li]:mt-2;
  }

  .inline-code {
    @apply relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold;
  }

  .lead {
    @apply text-xl text-muted-foreground;
  }

  .large {
    @apply text-lg font-semibold;
  }
  .small {
    @apply text-sm font-medium leading-none;
  }
  .muted {
    @apply text-sm text-muted-foreground;
  }
}

svg {
  @apply fill-current;
}

@keyframes slideUp {
  from {
    margin-top: 5rem; /* mb-10 */
    margin-bottom: 0rem; /* mb-10 */
  }
  to {
    margin-top: 0rem; /* mb-10 */
    margin-bottom: 5rem; /* mb-20 */
  }
}

@keyframes popIn {
  from {
    transform: scale(0.95);
    opacity: 0;
  }
  to {
    transform: scale(1);
    opacity: 1;
  }
}

.animate-message {
  animation:
    slideUp 0.3s ease-out,
    popIn 0.15s ease-in;
}
